package entity

import (
	"gitee.com/linxing_3/sr-core/domain/model"
	"gitee.com/linxing_3/sr-core/domain/model/vo"
	"gitee.com/mkwchecking/sr-admin/apps/knowledge/entity/kvo"
)

type EmbedStatus int

const (
	EmbedStatusNone EmbedStatus = iota
	EmbedStatusProgress
	EmbedStatusSuccess
	EmbedStatusFailed
)

// 知识库文档
type KnoDoc struct {
	model.GAIntPK

	Title      string `json:"title" gorm:"comment:标题"`                  // 标题
	Desc       string `json:"desc" gorm:"comment:描述"`                   // 描述
	RefId      int    `json:"refId" gorm:"index;comment:引用的文件id"`       // 引用的文件id
	SourcePath string `json:"sourcePath" gorm:"size:128;comment:源文件路径"` // 源文件路径
	EmbedModel string `json:"embedModel" gorm:"size:128;comment:嵌入模型"`  // 嵌入模型
	Namespace  string `json:"namespace" gorm:"size:128;comment:命名空间"`   // 命名空间

	EmbedData   *kvo.Matrix `json:"embedData" gorm:"type:blob;comment:嵌入数据"` // 嵌入数据(默认使用chroma存储,本字段为空,备用)
	EmbedTime   *vo.Date    `json:"embedTime" gorm:"comment:嵌入时间"`           // 嵌入时间
	EmbedStatus EmbedStatus `json:"embedStatus" gorm:"comment:嵌入状态"`         // 嵌入状态

	model.GAllInject
}

func (KnoDoc) TableName() string {
	return "kno_doc"
}
